package com.lijinjiang.xml04;

import com.lijinjiang.xml04.pojo.Book;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName Dom4jTest
 * @Description 解析 books.xml 文件
 * @Author Li
 * @Date 2022/9/6 2:08
 * @ModifyDate 2022/9/6 2:08
 * @Version 1.0
 */
public class Dom4jTest {
    public static void main(String[] args) throws Exception {
        // 1.通过创建 SAXReader 对象，来读取 xml 文件，获取 Document 对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("P05_XML/src/com/lijinjiang/xml04/books.xml");
        // 2.通过 document 对象，拿到 xml 的根元素对象
        Element rootElement = document.getRootElement();
        // 3.通过根元素对象，获取所有的 book 标签对象
        List<Element> books = rootElement.elements("book");
        // 4.遍历每个 book 对象，获取到 book 标签对象内的每一个元素
        for (Element book : books) {
            // 获取 sn 属性
            String snValue = book.attribute("sn").getValue();
            // 获取 name 标签内的 text 文本
            String nameText = book.element("name").getText();
            // 获取 author 标签内的 text 文本
            String authorText = book.element("author").getText();
            // 获取 price 标签内的 text 文本
            String priceText = book.element("price").getText();
            // 通过全参构造法创建 Book 对象并输出
            System.out.println(new Book(snValue, nameText, authorText
                    , BigDecimal.valueOf(Double.parseDouble(priceText))));
        }
    }
}
